#ifndef EXPR_HELPER_HPP
#define EXPR_HELPER_HPP
//* expr_helper.hpp
/** helper traits class to select how to refer to an "expression template code"
 *  in general: by reference
 *  for scalars: by value
 */

template <typename T> class A_Scalar;
//* primary template
template <typename T>
class A_Traits {
public:
	typedef T const& ExprRef; //* type to refer to is constant reference
};
//* partial specialization for scalars
template <typename T>
class A_Traits<A_Scalar<T> > {
public:
	typedef A_Scalar<T> ExprRef; //* type to refer to is ordinary value
};

#endif